package mlz.g_big;

import java.math.BigDecimal;
import java.math.RoundingMode;

//BigDecimal: 大浮点型
public class BigDecimalDemo03 {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.2;

        //1.把浮点型数据封装成BigDecimal对象,在进行运算
        /*
        BigDecimal(double val): 得到的对象是没有办法精确计算浮点数据的 -> 不太建议使用
        BigDecimal(String val): 得到的对象是可以精确计算浮点型数据的 可以使用
        static BigDecimal valueOf(double val): 得到的对象是可以精确计算浮点型数据的 可以使用
         */

        BigDecimal bd1 = BigDecimal.valueOf(a);
        BigDecimal bd2 = BigDecimal.valueOf(b);

        //2.加法
        System.out.println(bd1.add(bd2));//0.3
        //3.减法
        System.out.println(bd1.subtract(bd2));//-0.1
        //4.乘法
        System.out.println(bd1.multiply(bd2));//0.02
        //5.除法
        System.out.println(bd1.divide(bd2));//0.5

        BigDecimal d1 = BigDecimal.valueOf(0.1);
        BigDecimal d2 = BigDecimal.valueOf(0.3);
        //如果出现了除不尽的情况,就要使用它的一个重载方法,给他指定参数规定是哪一种数据处理方式
        //System.out.println(d1.divide(d2));

        BigDecimal divide = d1.divide(d2, RoundingMode.HALF_UP);
        System.out.println(divide);//0.3

        //将BigDecimal 转换成 double类型
        double value = divide.doubleValue();
        System.out.println(value);//0.3

    }
}








